
package com.siashan.unipay4j.wx.model.refund;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

/**
 * 退款回调接口响应报文
 *
 * @author siashan
 * @since 2.0.1
 * @date  2023-02-14 11:37
 */
@Getter
@Setter
@NoArgsConstructor
public class RefundNotifyResult {

    /**
     * 直连商户号
     */
    private String mchid;
    /**
     * 商户订单号
     */
    @JSONField(name = "out_trade_no")
    private String outTradeNo;
    /**
     * 微信支付订单号
     */
    @JSONField(name = "transaction_id")
    private String transactionId;
    /**
     * 商户退款单号
     */
    @JSONField(name = "out_refund_no")
    private String outRefundNo;
    /**
     * 微信支付退款单号
     */
    @JSONField(name = "refund_id")
    private String refundId;
    /**
     * 退款状态
     *
     * @apiNote 退款状态，枚举值：
     * SUCCESS：退款成功
     * CLOSED：退款关闭
     * ABNORMAL：退款异常，退款到银行发现用户的卡作废或者冻结了，导致原路退款银行卡失败，可前往【商户平台—>交易中心】，手动处理此笔退款
     * 示例值：SUCCESS
     */
    @JSONField(name = "refund_status")
    private String refundStatus;
    /**
     * 退款成功时间
     *
     * @apiNote 1、退款成功时间，遵循rfc3339标准格式，格式为yyyy-MM-DDTHH:mm:ss+TIMEZONE，yyyy-MM-DD表示年月日，T出现在字符串中，表示time元素的开头，HH:mm:ss表示时分秒，TIMEZONE表示时区（+08:00表示东八区时间，领先UTC 8小时，即北京时间）。例如：2015-05-20T13:29:35+08:00表示，北京时间2015年5月20日13点29分35秒。
     * 2、当退款状态为退款成功时返回此参数。
     * 示例值：2018-06-08T10:34:56+08:00
     */
    @JSONField(name = "success_time")
    private String successTime;
    /**
     * 退款入账账户
     *
     * @apiNote 取当前退款单的退款入账方。
     * 1、退回银行卡：{银行名称}{卡类型}{卡尾号}
     * 2、退回支付用户零钱: 支付用户零钱
     * 3、退还商户: 商户基本账户、商户结算银行账户
     * 4、退回支付用户零钱通：支付用户零钱通
     * 示例值：招商银行信用卡0403
     */
    @JSONField(name = "user_received_account")
    private String userReceivedAccount;

    /**
     * 金额信息
     */
    private RefundNotifyAmount amount;

}
